1. Technical Field
This disclosure relates to network adapters.
2. Related Art
Computer networks commonly are used to transfer information to and from a computing system. Network interface cards or adapters (NICs) are commonly used to receive network information (as packets or frames) from other network devices and systems and forward the information to a computing system. NICs are also used to transfer information from a computing system to other network devices and systems.
Typically, NICs use buffers (memory storage modules) to handle network traffic. Receive buffers are used to temporarily store network data received by a NIC, and transmit buffers are used to temporarily store information that is sent by a NIC to the network. Depending on the design requirements of a network adapter, a predetermined number of transmit buffers and receive buffers may be assigned for a NIC to perform its operations.
NICs today can transfer data over a network link at very high rates, for example, at speeds defined by Gigabit Ethernet and 10 Gigabit Ethernet specifications. However, the high-speed NICs have to conform to speed/addressing limitations of existing/legacy type computing system architecture. For example, an x86 architecture limits input/output (I/O) memory address space that is available for a device to 64 KB. 64 KB may not be enough for the NIC to operate with applications that may need more memory. This may discourage computing system application and driver developers to write applications for a high speed NIC because the application developers believe tnat the NIC may not have enough memory to support their applications.
As the NIC transfer speeds continue to increase, there is a need to come up with efficient buffer management in NICs to permit use of high speed NICs in systems with constrained resources, for example, systems with limited memory allocation for use by applications and device drivers.